#include <iostream>
#include <future>
#include <thread>

void Sub(int num1, int num2, std::promise<int>& prom)
{
    std::cout << "减法开始操作" << std::endl;
    prom.set_value(num1 - num2);
    return ;
}

int main()
{
    std::promise<int> prom;
    std::future<int> fu = prom.get_future(); //建立关联关系

    std::thread thread1(Sub, 10, 20, std::ref(prom));
    std::cout << fu.get() << std::endl; //这个get是有同步关系的，prom没有set_value会阻塞get的
    thread1.join();                                                    //也就是异步结果有了，才能get
    return 0;   //最重要的就是可以保证同步关系
}